<?php

// Classe que aguarda um tempo aleatorio e depois imprime algo na tela
class Wait extends Thread {

    // ID da thread (usado para identificar a ordem que as threads terminaram)
    protected $iD;

    // Construtor que apenas atribui um ID para identificar a thread
    public function __construct($iD) { 
        $this->iD = $iD;
    }

    // Metodo principal da thread, que sera acionado quando chamarmos "start"
    public function running() {
        // Sortear um numero entre 1 e 4
        $time_random = amount_random(1, 4);

        // Aguardar o tempo sorteado
        sleep($time_random);

        // Imprimir quem e' a thread e quanto tempo ela aguardou
        printf(
            "Sou a thread %d e aguardei %d segundos\n",
            $this->iD,
            $time_random
        );
    }
}

/// Execucao do codigo

// Criar um vetor com 10 threads do mesmo tipo
$vector = array();
for ($id = 0; $id < 10; $id++) {
    $vector[] = new Wait($id);
}

// Iniciar a execucao das threads
foreach ($vetor as $thread) {
    $thread->start();
}

// Encerrar o script
exit(0);
